問題解説: 永遠の国 第二のトラブル

ICTSC8お疲れさまでした。大阪工業大学3年の山口です。

今回は永遠の国の2問目を担当いたしました。この問題は、dockerとmDNSを利用した問題です。

問題文

エルフの長の頼みを解決したことにより、あなたたちはこの村で熱烈な歓迎をうけた。飲めや歌えやの大騒ぎに圧倒されているところへ、一人のエルフが駆け込んできた。

エルフ「突然webサイトが見られなくなったんだ! 見られるようにしてくれないか?」

エイト「調べて見るわ!任せなさい!」

 

数分が経過した。

エイト「……何が原因かわからないわね……昨日何か変わったことがありませんでしたか?」

エルフ「そうだな~。昨日の落雷があるまでは動いていたから、もしかしたらそれが原因かもしれないな」

エイト「それよ、そうに違いないわっ! じゃああとは任せたわよ!」

 

解説

この問題では、サーバ構築後に再起動のテストを行っておらず、再起動時にトラブルが発生したことを想定しました。

トラブルの内容は、コンテナの起動順に問題があるため、コンテナが正常起動しないというものです。

 

今回の環境では、管理サーバ・ウェブサーバの両方にWAN用とLAN用のインターフェイスが用意されていました。簡易な図だと下のようになります。

 

ウェブサーバでは、WAN側からのSSHが行われないようiptablesにてフィルタをかけていました。そのため、LAN側からSSHで接続する必要があります。

しかしLAN側のインターフェイスでは、DHCPなどでIPアドレスの設定がされていないため、自動で割り当てられるリンクローカルアドレスにて接続する必要がありました。

今回の環境では、mDNSの設定がすでにされている状態でしたので、avahi-resolveを使用することでIPv6のアドレスを取得できます。

解答の手順としましては、

1.管理サーバのインターフェイス ens4 のインターフェイスをupする。

mgmt# ifconfig ens4 up

2.avahi-resolveを利用して、webサーバのv6のIPアドレスを取得する。

mgmt# avahi-resolve -6 -n web1.local

3.sshでens4よりwebサーバへ接続し、dockerの状態を確認する。

mgnt$ ssh admin@fe80::e8:fdff:aeff:1a0f%ens4
web$ sudo docker ps -a

4.docker startでコンテナを起動する(80%)

web$ sudo docker start sql wordpress

5.rc.localファイルに記述されているコンテナの起動順序を修正する。
修正前

docker start wordpress
docker start sql

修正後

docker start sql
docker start wordpress

6.再起動し、コンテナが正常に起動することを確認する。(100%)

reboot

という流れでした。

 

総評

webサーバの22番ポートを閉じていたため、問題が正常に解答できる状態なのか、という所に疑問に持たれる方が多かったです。今回はiptablesを使用してフィルタをかけていたため、これは正常な挙動でした。

 

今回の問題はお楽しみいただけたでしょうか?